package com.example.oop;

import com.example.oop.demo06.A;
import com.example.oop.demo06.B;
import com.example.oop.demo07.Person;
import com.example.oop.demo07.Student;
import com.example.oop.demo09.Outer;

/**
 * 1.提高程序的安全性，保护数据
 * 2.隐藏代码的实现细节
 * 3.统一接口
 * 4.增加系统可维护性
 */
public class Application {
    public static void main(String[] args) {
//        Student student = new Student();
//
//        student.setName("阿松大");
//        System.out.println(student.getName());
//
//        student.setAge(600);
//        System.out.println(student.getAge());


//        Student student = new Student();
//        student.test1();

        /**
         * 静态：方法的调用只和左边定义的数据类型有关
         * 非静态：重写
         */
//        A a = new A();
//        a.test();
//        B b = new A();
//        b.test();
//        A a = new A();
//        a.test01();
//        B b = new A();
//        b.test01();
        /**
         * 一个对象的实际类型是确定的
         * 可以指向的引用类型就不确定了：父类的引用指向子类
         * Student  能调用的方法都是自己的或者继承父类的
         * Person   父类型，可以指向子类，但是不能调用子类独有的方法
         */
//        Student s1 = new Student();
//        Person s2 = new Student();
//        Object s3 = new Student();
//
//        //对象能执行哪些方法，主要看对象左边的类型，和右边关系不大
//        ((Student) s2).eat();//想要使用子类方法，需要强转对象类型
////        Student student=(Student) s2;
//        s1.eat();
//
//        s1.run();
//        s2.run();

        Outer outer = new Outer();
//        Outer.Inner inner = outer.new Inner();
//        inner.getId();

        Thread thread = new Thread("t1"){
            @Override
            public void run() {
//                log.debug("zbc");
                while(true){
                    try {
                        Thread.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        thread.start();
    }
}
